<?php

namespace App\Http\Controllers\home;

use Illuminate\Http\Request;
use DB;
use Hash;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Mail;

class ZhuceController extends Controller
{

    //进行遍历类别
    static public function getCate($pid){
        //定义一个空数组
        $cate=array();
        //通过传过来的pid查询类别表
        $data=DB::table('cate')->where('pid','=',$pid)->get();
        //遍历查询到的数据
        foreach($data as $k=>$v){
            //通过自身的id去掉用自身的方法(通过pid查询) 判断下面是否还存在子分类 如果有就把他压入自身的一个下标中
            $v['fenlei']=self::getCate($v['cid']);
            //将每次得到的数据遍历到空数组中
            $cate[]=$v;
        }
         return $cate;
    } 
    // 这里是原来的测试
    public function getIndex(){
        return view('/home/login/zhuce');
    }

    //验证并且插入用户信息
    public function postInsert(Request $request){
        
        //  $this->validate($request, [
        //     'h_upassword' => 'required',
        //     'h_repassword' => 'required|same:h_upassword',
        //     'email' => 'required|email',
        //     'code' => 'required',
            
        // ],[
        //     'h_upassword.required'=>'密码必填',
        //     'h_repassword.required'=>'确认密码必填',
        //     'h_uage.required'=>'年龄必填',
        //     'email.required'=>'邮箱必填',
        //     'h_upassword.same'=>'密码不一致',
        //     'email.email'=>'邮箱格式错误',
        //     'code.required'=>'验证码未填写',
        // ]);
         // $request->flash();
        $data=$request->except('_token','repassword');
        // dd($data);

        $data=$request->all();
        if($data['h_upassword']!=$request->input('h_repassword')){
            $request->flashExcept('h_repassword');
            return back()->with('perror','密码不一致');
        }
         //将验证码小写
        $code=strtolower(session('code'));
        $data['code']=strtolower($data['code']);
        //进行验证
        if(!($data['code']==$code)){
            $request->flashExcept('code');
            return back()->with('cerror','验证码错误');
        }
        //处理密码
        $data=$request->except('_token','h_repassword','code');
        //把密码进行哈希加密
        $data['h_upassword']=Hash::make($data['h_upassword']);
        //给数据一个token字段  用于标识是否来自数据库 用于激活和修改密码
        $data['token']=str_random(50);
        $data['createTime']=date('Y-m-d',time());
        //返回添加id
        $h_uid=DB::table('home_user')->insertGetId($data);
        if($h_uid>0){
            // echo '11';
            //发送邮件  调用静态类
            self::mailto($data['email'],$h_uid,$data['token']);
            return view('/email/success');
        }else{
            return back()->with('添加失败');
        }
    }
    //一个静态的类 用来发送邮件
    static public function mailto($email,$h_uid,$token){
        Mail::send('/email/index', ['h_uid' => $h_uid,'token'=>$token], function ($m) use ($email) {
            //发送邮件 标题为subject内容
            $m->to($email)->subject('注册成功邮件');
        });
    }

    public function getJihuo(Request $request){
        //通过传过来的ID查询数据库中token  和参数中的toen做对比 如果匹配则进行修改激活操作
        $res=DB::table('h_user')->where('h_uid','=',$request->input('h_uid'))->select('token')->first();
        //自定义数组用于修改状态
        $arr['status']=2;
        // dd($res);
        if($res['token']==$request->input('token')){
            // echo  '11';
            $res2=DB::table('h_user')->where('h_uid','=',$request->input('h_uid'))->update($arr);
            if($res2>0){
                echo'恭喜激活成功<a href="http://www.lamp163.com/zhuce/index">点击跳转</a>';
            }else{
                echo'激活失败<a href="http://www.lamp163.com/zhuce/index">点击跳转</a>';
            }
            
        }
        
    }
//请求数据到短信接口，检查环境是否 开启 curl init。

   static public function Post($curlPost,$url){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_NOBODY, true);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        $return_str = curl_exec($curl);
        curl_close($curl);
        return $return_str;
}
//将 xml数据转换为数组格式。

    static public function xml_to_array($xml){
    $reg = "/<(\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/";
    if(preg_match_all($reg, $xml, $matches)){
        $count = count($matches[0]);
        for($i = 0; $i < $count; $i++){
        $subxml= $matches[2][$i];
        $key = $matches[1][$i];
            if(preg_match( $reg, $subxml )){
                $arr[$key] = self::xml_to_array( $subxml );
            }else{
                $arr[$key] = $subxml;
            }
        }
    }
    return $arr;
}


    public function postPhone(){
        //短信接口地址
        $target = "http://106.ihuyi.cn/webservice/sms.php?method=Submit";
        //获取手机号
        $mobile = $_POST['mobile'];
        session(['phone_code'=>rand(1000,9999)]);
        //生成的随机数
        $mobile_code = session('phone_code');
        if(empty($mobile)){
            exit('手机号码不能为空');
        }

        $post_data = "account=cf_clb321&password=lovelry0&mobile=".$mobile."&content=".rawurlencode("您的验证码是：".$mobile_code."。请不要把验证码泄露给其他人。");
        //用户名是登录ihuyi.com账号名（例如：cf_demo123）
        //查看密码请登录用户中心->验证码、通知短信->帐户及签名设置->APIKEY
        $gets =  self::xml_to_array(self::Post($post_data, $target));
        
        echo $gets['SubmitResult']['msg'];
    }
    public function postInsert2(Request $request){
        var_dump(session('code'));
        dd($request->all());
    }

    // 这里往下是关于前台的注册操作

    public function postTest(Request $request){
        $data=$request->only('h_uname','h_upassword','h_utel');
        $phone_code=$request->input('phone_code');
        $code=$request->input('code');
        $data['createTime']=date('Y-m-d',time());
        $data['token']=str_random(50);
        $data['h_upassword']=Hash::make($data['h_upassword']);
    
        $this->validate($request, [
            'h_uname' => 'required',
            'h_upassword' => 'required',
            'h_repassword' => 'required|same:h_upassword',
            'h_utel' => 'required',
            
        ],[
            'h_uname.required'=>'用户名必填',
            'h_upassword.required'=>'密码必填',
            'h_repassword.required'=>'确认密码必填',
            'h_utel.required'=>'电话号必填',
            'h_upassword.same'=>'密码不一致',

        ]);
        if($phone_code!=session('phone_code')){
            $request->flashExcept('phone_code');
            return redirect('/zhuce/index')->with('perror','手机验证码错误');
        }
        if($code!=session('code')){
            $request->flashExcept('code');
            return redirect('/zhuce/index')->with('cerror','验证码错误');
        }
        
        // dd($data);
        $res=DB::table('home_user')->insert($data);
        // dd($res);
        if($res>0){
            return redirect('/zhuce/success')->with('success','注册成功');
        }else{
            return redirect('/zhuce/error')->with('error','注册失败');
        }
}
        //显示正确信息提示页面
        public function getSuccess(Request $request){
            $cate=self::getCate(0);

            return view("/home/login/success",['cate'=>$cate]);
        }

        //显示错误信息提示页面
        public function getError(Request $request){
            $cate=self::getCate(0);
            // dd($h_uid);
            return view('/home/login/error',['cate'=>$cate]);
        }
        


    
 }
